package com.just.fun.java8;

/**
 * 测试匿名内部类
 * 匿名内部类就是没有名字的局部内部类，不使用关键字class, extends, implements, 没有构造方法。
 * 　a·匿名内部类不能有构造方法。
 * 　b·匿名内部类不能定义任何静态成员、方法和类。
 * 　c·匿名内部类不能是public,protected,private,static。
 * 　d·只能创建匿名内部类的一个实例。
 * 　e·一个匿名内部类一定是在new的后面，用其隐含实现一个接口或实现一个类。
 * 　f·因匿名内部类为局部内部类，所以局部内部类的所有限制都对其生效。
 * 能够使用Lambda的依据是必须有相应的函数接口（函数接口，是指内部只有一个抽象方法的接口）
 */
public class CrazyBoyTest {
    public static void main(String[] args) {
        //第一种，fuck匿名内部类
        CrazyBoyTest t=new CrazyBoyTest();
        t.showFuckWhat(new Qinshou() {
            @Override
            public void fuckSomeThing() {
                System.out.println("fuck 王者");
            }
        });
        //第二种，fuck lambda
        t.showFuckWhat(()->{
            System.out.println("fuck 荣耀");
        });

    }

    private  void showFuckWhat(Qinshou qinshou){
        qinshou.fuckSomeThing();
    }
}
